package com.xjh.basestudy.lanqiaobei.base;

// Java 集合（List、Set、Map）常用方法示例
/**
 * 1.
 *
 * */
import java.util.*;

public class CollectionOperations {
    public static void main(String[] args) {
        // ========== List 常用操作 ==========
        System.out.println("===== List 操作 =====");
        List<String> list = new ArrayList<>();

        // 添加元素
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");
        list.add(1, "Blueberry"); // 指定索引插入
        System.out.println("List: " + list);

        // 移除元素
        list.remove("Banana"); // 按值移除
        list.remove(1); // 按索引移除
        System.out.println("After remove: " + list);

        // 获取元素
        String element = list.get(0);
        System.out.println("索引 0 的元素: " + element);

        // 查找元素索引
        int index = list.indexOf("Cherry");
        System.out.println("Cherry 的索引: " + index);

        // 判断是否包含
        System.out.println("List 是否包含 Apple: " + list.contains("Apple"));

        // 遍历方式 1: for 索引
        System.out.println("遍历 List (for 索引):");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        // 遍历方式 2: 增强 for
        System.out.println("遍历 List (增强 for):");
        for (String item : list) {
            System.out.println(item);
        }

        // 遍历方式 3: Iterator
        System.out.println("遍历 List (Iterator):");
        Iterator<String> listIterator = list.iterator();
        while (listIterator.hasNext()) {
            System.out.println(listIterator.next());
        }

        // 遍历方式 4: Lambda (Java 8)
        System.out.println("遍历 List (Lambda):");
        list.forEach(System.out::println);

        // 清空列表
        list.clear();
        System.out.println("List 是否为空: " + list.isEmpty());

        // ========== Set 常用操作 ==========
        System.out.println("===== Set 操作 =====");
        Set<Integer> set = new HashSet<>();

        // 添加元素
        set.add(10);
        set.add(20);
        set.add(30);
        set.add(10); // Set 不能包含重复元素
        System.out.println("Set: " + set);

        // 移除元素
        set.remove(20);
        System.out.println("After remove: " + set);

        // 判断是否包含元素
        System.out.println("Set 是否包含 10: " + set.contains(10));

        // 遍历方式 1: 增强 for
        System.out.println("遍历 Set (增强 for):");
        for (Integer num : set) {
            System.out.println(num);
        }

        // 遍历方式 2: Iterator
        System.out.println("遍历 Set (Iterator):");
        Iterator<Integer> setIterator = set.iterator();
        while (setIterator.hasNext()) {
            System.out.println(setIterator.next());
        }

        // 遍历方式 3: Lambda
        System.out.println("遍历 Set (Lambda):");
        set.forEach(System.out::println);

        // 清空 Set
        set.clear();
        System.out.println("Set 是否为空: " + set.isEmpty());

        // ========== Map 常用操作 ==========
        System.out.println("===== Map 操作 =====");
        Map<String, Integer> map = new HashMap<>();

        // 添加键值对
        map.put("Alice", 25);
        map.put("Bob", 30);
        map.put("Charlie", 35);
        System.out.println("Map: " + map);

        // 获取值
        System.out.println("Alice 的年龄: " + map.get("Alice"));

        // 判断是否包含键或值
        System.out.println("Map 是否包含键 'Bob': " + map.containsKey("Bob"));
        System.out.println("Map 是否包含值 30: " + map.containsValue(30));

        // 移除键值对
        map.remove("Charlie");
        System.out.println("After remove: " + map);

        // 遍历方式 1: 遍历键集合
        System.out.println("遍历 Map (keySet):");
        for (String key : map.keySet()) {
            System.out.println(key + " -> " + map.get(key));
        }

        // 遍历方式 2: 遍历 entrySet（推荐）
        System.out.println("遍历 Map (entrySet):");
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + " -> " + entry.getValue());
        }

        // 遍历方式 3: Iterator
        System.out.println("遍历 Map (Iterator):");
        Iterator<Map.Entry<String, Integer>> mapIterator = map.entrySet().iterator();
        while (mapIterator.hasNext()) {
            Map.Entry<String, Integer> entry = mapIterator.next();
            System.out.println(entry.getKey() + " -> " + entry.getValue());
        }

        // 遍历方式 4: Lambda
        System.out.println("遍历 Map (Lambda):");
        map.forEach((key, value) -> System.out.println(key + " -> " + value));

        // 清空 Map
        map.clear();
        System.out.println("Map 是否为空: " + map.isEmpty());
    }
}
